
<!doctype html>
<html lang="en" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
        <meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface">
      
      
        <meta name="author" content="Hieromon Ikasamo">
      
      
        <link rel="canonical" href="https://Hieromon.github.io/AutoConnect/adnetwork.html">
      
      
        <link rel="prev" href="adcpcontrol.html">
      
      
        <link rel="next" href="adauthentication.html">
      
      <link rel="icon" href="assets/images/favicon.png">
      <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.9">
    
    
      
        <title>Settings and controls for network and WiFi - AutoConnect for ESP8266/ESP32</title>
      
    
    
      <link rel="stylesheet" href="assets/stylesheets/main.0d440cfe.min.css">
      
        
        <link rel="stylesheet" href="assets/stylesheets/palette.2505c338.min.css">
      
      

    
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
      <link rel="stylesheet" href="css/paragraph.css">
    
      <link rel="stylesheet" href="css/extra.css">
    
      <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.14.0/css/all.css">
    
    <script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      
  


  
  


  <script id="__analytics">function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-EHK8XV10VE"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-EHK8XV10VE",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-EHK8XV10VE",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script>

  
    <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
  

    
    
    
  </head>
  
  
    
    
    
    
    
    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
  
    
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#404-handler" class="md-skip">
          Skip to content
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
    
      

<header class="md-header" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="Header">
    <a href="index.html" title="AutoConnect for ESP8266/ESP32" class="md-header__button md-logo" aria-label="AutoConnect for ESP8266/ESP32" data-md-component="logo">
      
  <img src="images/arduino-logo.svg" alt="logo">

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            AutoConnect for ESP8266/ESP32
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
              Settings and controls for network and WiFi
            
          </span>
        </div>
      </div>
    </div>
    
    
    
      <label class="md-header__button md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
      </label>
      <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="Search">
        
        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
        </button>
      </nav>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            Initializing search
          </div>
          <ol class="md-search-result__list" role="presentation"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
      <div class="md-header__source">
        <a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  </div>
  <div class="md-source__repository">
    Hieromon/AutoConnect
  </div>
</a>
      </div>
    
  </nav>
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    


<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="index.html" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo" aria-label="AutoConnect for ESP8266/ESP32" data-md-component="logo">
      
  <img src="images/arduino-logo.svg" alt="logo">

    </a>
    AutoConnect for ESP8266/ESP32
  </label>
  
    <div class="md-nav__source">
      <a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  </div>
  <div class="md-source__repository">
    Hieromon/AutoConnect
  </div>
</a>
    </div>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="index.html" class="md-nav__link">
        Overview
      </a>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="gettingstarted.html" class="md-nav__link">
        Getting started
      </a>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="menu.html" class="md-nav__link">
        AutoConnect menu
      </a>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="basicusage.html" class="md-nav__link">
        Basic usage
      </a>
    </li>
  

    
      
      
      

  
  
    
  
  
    
    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
      
      
      
        <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
          Advanced usage
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
        <label class="md-nav__title" for="__nav_5">
          <span class="md-nav__icon md-icon"></span>
          Advanced usage
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="advancedusage.html" class="md-nav__link">
        Advanced usage
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adconnection.html" class="md-nav__link">
        AutoConnect WiFi connection control
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adcpcontrol.html" class="md-nav__link">
        Captive portal control
      </a>
    </li>
  

            
          
            
              
  
  
    
  
  
    <li class="md-nav__item md-nav__item--active">
      
      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
      
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          Settings and controls for network and WiFi
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="adnetwork.html" class="md-nav__link md-nav__link--active">
        Settings and controls for network and WiFi
      </a>
      
        

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#404-handler" class="md-nav__link">
    404 handler
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#assign-user-sketchs-home-path" class="md-nav__link">
    Assign user sketch's home path
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#change-ssid-and-password-for-softap" class="md-nav__link">
    Change SSID and Password for SoftAP
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#combination-with-mdns" class="md-nav__link">
    Combination with mDNS
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#make-ssid-of-softap-unique" class="md-nav__link">
    Make SSID of SoftAP unique
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#relocate-the-autoconnect-home-path" class="md-nav__link">
    Relocate the AutoConnect home path
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#softap-access-point-ip-settings" class="md-nav__link">
    SoftAP access point IP settings
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#static-ip-assignment-as-a-client" class="md-nav__link">
    Static IP assignment as a client
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#static-ip-preservation" class="md-nav__link">
    Static IP preservation
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#station-hostname" class="md-nav__link">
    Station hostname
  </a>
  
</li>
      
    </ul>
  
</nav>
      
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adauthentication.html" class="md-nav__link">
        Authentication settings
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adcredential.html" class="md-nav__link">
        Credential accesses
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adexterior.html" class="md-nav__link">
        Customizing page appearance
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adothers.html" class="md-nav__link">
        Other operation settings and controls
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
      
      
      
        <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
          Custom Web pages
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_6">
          <span class="md-nav__icon md-icon"></span>
          Custom Web pages
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acintro.html" class="md-nav__link">
        Custom Web pages with AutoConnect
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acelements.html" class="md-nav__link">
        AutoConnectElements
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acjson.html" class="md-nav__link">
        Custom Web pages with JSON
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="achandling.html" class="md-nav__link">
        Handling the custom Web pages
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acinteract.html" class="md-nav__link">
        Interact between Sketch and AutoConnectElements
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
      
      
      
        <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
          OTA Updates
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_7">
          <span class="md-nav__icon md-icon"></span>
          OTA Updates
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="otaupdate.html" class="md-nav__link">
        OTA Updates
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="otabrowser.html" class="md-nav__link">
        OTA via Web Browser
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="otaserver.html" class="md-nav__link">
        OTA using Update Server
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="filesystem.html" class="md-nav__link">
        Using Filesystem
      </a>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
      
      
      
        <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
          Library APIs
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_9">
          <span class="md-nav__icon md-icon"></span>
          Library APIs
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="api.html" class="md-nav__link">
        AutoConnect API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apiaux.html" class="md-nav__link">
        AutoConnectAux API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apiconfig.html" class="md-nav__link">
        AutoConnectConfig API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apielements.html" class="md-nav__link">
        AutoConnectElements API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apiupdate.html" class="md-nav__link">
        AutoConnectUpdate API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apiextra.html" class="md-nav__link">
        Something extra
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
      
      
      
        <label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
          Examples
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_10">
          <span class="md-nav__icon md-icon"></span>
          Examples
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="howtoembed.html" class="md-nav__link">
        How to embed
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="datatips.html" class="md-nav__link">
        Tips for data conversion
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="menuize.html" class="md-nav__link">
        Attach the menus
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="wojson.html" class="md-nav__link">
        Custom Web pages w/o JSON
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="esp32cam.html" class="md-nav__link">
        Works with ESP32-CAM
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" >
      
      
      
        <label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
          Appendix
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_11">
          <span class="md-nav__icon md-icon"></span>
          Appendix
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="lsbegin.html" class="md-nav__link">
        Inside AutoConnect::begin
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="credit.html" class="md-nav__link">
        Saved credentials access
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acupload.html" class="md-nav__link">
        File upload handler
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="colorized.html" class="md-nav__link">
        Custom colorized
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="changelabel.html" class="md-nav__link">
        Change label text
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="faq.html" class="md-nav__link">
        FAQ
      </a>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="changelog.html" class="md-nav__link">
        Change log
      </a>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="license.html" class="md-nav__link">
        License
      </a>
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#404-handler" class="md-nav__link">
    404 handler
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#assign-user-sketchs-home-path" class="md-nav__link">
    Assign user sketch's home path
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#change-ssid-and-password-for-softap" class="md-nav__link">
    Change SSID and Password for SoftAP
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#combination-with-mdns" class="md-nav__link">
    Combination with mDNS
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#make-ssid-of-softap-unique" class="md-nav__link">
    Make SSID of SoftAP unique
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#relocate-the-autoconnect-home-path" class="md-nav__link">
    Relocate the AutoConnect home path
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#softap-access-point-ip-settings" class="md-nav__link">
    SoftAP access point IP settings
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#static-ip-assignment-as-a-client" class="md-nav__link">
    Static IP assignment as a client
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#static-ip-preservation" class="md-nav__link">
    Static IP preservation
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#station-hostname" class="md-nav__link">
    Station hostname
  </a>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  



  <h1>Settings and controls for network and WiFi</h1>

<p>AutoConnect allows you to make the static configuration of SoftAP at runtime. Its configuration includes the identification information on the network such as the IP address and the access path of the Web page handled by AutoConnect etc. In addition, the mDNS service allows SoftAP to be accessed by hostname on the local network.<br />
The configuration settings for the network that can be set by AutoConnect is as follows:</p>
<ul>
<li><a href="#404-handler">404 handler</a></li>
<li><a href="#assign-user-sketchs-home-path">Assign user sketch's home path</a></li>
<li><a href="#change-ssid-and-password-for-softap">Change SSID and Password for SoftAP</a></li>
<li><a href="#combination-with-mdns">Combination with mDNS</a></li>
<li><a href="#make-ssid-of-softap-unique">Make SSID of SoftAP unique</a></li>
<li><a href="#relocate-the-autoconnect-home-path">Relocate the AutoConnect home path</a></li>
<li><a href="#softap-access-point-ip-settings">SoftAP access point IP settings</a></li>
<li><a href="#static-ip-assignment-as-a-client">Static IP assignment as a client</a></li>
<li><a href="#static-ip-preservation">Static IP preservation</a></li>
<li><a href="#station-hostname">Station hostname</a></li>
</ul>
<h2 id="404-handler">404 handler<a class="headerlink" href="#404-handler" title="Permanent link">&para;</a></h2>
<p>AutoConnect cannot allow the Sketch registers the <strong>"Not-found"</strong> handler (404-handler) to the ESP8266WebServer natively. AutoConnect traps Not-found handler of the ESP8266WebServer for its own page processing. If the Sketch overrides the Not-found handler, AutoConnect will miss the opportunity to control the HTTP session and becomes unresponsive to the menu.<br />
Registering the Not-found handler is a different method than for ESP8266WebServer, use <a href="api.html#onnotfound">AutoConnect::onNotFound</a>. This restriction applies to the WebServer for ESP32 as well.</p>
<h2 id="assign-user-sketchs-home-path">Assign user sketch's home path<a class="headerlink" href="#assign-user-sketchs-home-path" title="Permanent link">&para;</a></h2>
<p><strong>HOME</strong> for returning to the user's sketch homepage will display at the bottom of the AutoConnect menu. It could be set using the <a href="api.html#home">AutoConnect::home</a> function.</p>
<p><img src="images/menu_home.png" /></p>
<p>The Sketch HOME path is closely related to the <a href="apiconfig.html#booturi">bootUri</a> that specifies the access path on module restart. AutoConnect has the following three parameters concerning control the URIs:</p>
<ul>
<li><strong>AUTOCONNECT_URI</strong><br />
    The <strong>ROOT</strong> URI of AutoConnect. It is defined in <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L113"><code>AutoConnectDefs.h</code></a> file and is assigned to <a href="menu.html#where-the-from">AutoConnect statistics screen</a> by default.</li>
<li><a href="apiconfig.html#homeuri"><strong>AutoConnectConfig::homeUri</strong></a><br />
    It is the hyperlink of listed on the AutoConnect menu as <strong>HOME</strong>.</li>
<li><a href="apiconfig.html#booturi"><strong>AutoConnectConfig::bootUri</strong></a><br />
    Which page appears at the captive portal, <code>AUTOCONNECT_URI</code>, or the homeUri. Its page will pop up automatically when you visit the captive portal.</li>
</ul>
<table>
<thead>
<tr>
<th>The definition of <strong>HOME</strong></th>
<th>Behavior</th>
<th>Specified by</th>
<th>Default value</th>
<th>Possible value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>ROOT</strong> of AutoConnect</td>
<td>Default for AC_ONBOOTURI_ROOT</td>
<td><code>#define AUTOCONNECT_URI</code> in <code>AutoConnectDefs.h</code></td>
<td><code>/_ac</code></td>
<td>URI string</td>
</tr>
<tr>
<td><strong>HOME</strong> for Application-specific</td>
<td>Listed on the <strong>menu list</strong> as <strong>HOME</strong><br>Also, It may be linked from the <strong>menu title</strong> and is <strong>redundant</strong> with the HOME menu item.<br>eg. Case of bootURI = AC_ONBOOTURI_HOME</td>
<td>AutoConnectConfig::homeURI</td>
<td><code>/</code></td>
<td>URI string</td>
</tr>
<tr>
<td>Which page <strong>loads</strong> at the boot time, ROOT or HOME</td>
<td>Appears after module reboot by <strong>RESET</strong> button with AutoConnect menu</td>
<td>AutoConnectConfig::bootURI</td>
<td>AC_ONBOOTURI_ROOT</td>
<td>AC_ONBOOTURI_HOME</td>
</tr>
<tr>
<td>Which page <strong>appears</strong> at the captive portal, ROOT or HOME</td>
<td>Auto pop-up</td>
<td>AutoConnectConfig::bootURI</td>
<td>AC_ONBOOTURI_ROOT</td>
<td>AC_ONBOOTURI_HOME</td>
</tr>
</tbody>
</table>
<h2 id="change-ssid-and-password-for-softap">Change SSID and Password for SoftAP<a class="headerlink" href="#change-ssid-and-password-for-softap" title="Permanent link">&para;</a></h2>
<p>An <strong>esp8266ap</strong> is default SSID name for SoftAP of captive portal and password is <strong>12345678</strong> for ESP8266. Similarly, <strong>esp32ap</strong> and <strong>12345678</strong> for ESP32. You can change both by setting <a href="apiconfig.html#apid">apid</a> and <a href="apiconfig.html#psk">psk</a>.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">AutoConnect portal;</span>
<span style="color: #f8f8f2">AutoConnectConfig config;</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">() {</span>
<span style="background-color: #49483e"><span style="color: #f8f8f2"> config.apid </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">&quot;ap_portal&quot;</span><span style="color: #f8f8f2">;</span>
</span><span style="background-color: #49483e"><span style="color: #f8f8f2">  config.psk  </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">&quot;new_password&quot;</span><span style="color: #f8f8f2">;</span>
</span><span style="color: #f8f8f2">  portal.config(config);</span>
<span style="color: #f8f8f2">  portal.begin();</span>
<span style="color: #f8f8f2">}</span>
</code></pre></div>
<p>Also, you can specify the SSID, password for SoftAP with the constructor of the AutoConnectConfig as below.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">AutoConnect portal;</span>
<span style="background-color: #49483e"><span style="color: #f8f8f2">AutoConnectConfig config(</span><span style="color: #e6db74">&quot;ap_portal&quot;</span><span style="color: #f8f8f2">, </span><span style="color: #e6db74">&quot;new_password&quot;</span><span style="color: #f8f8f2">);</span>
</span>
<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  portal.config(config);</span>
<span style="color: #f8f8f2">  portal.begin();</span>
<span style="color: #f8f8f2">}</span>
</code></pre></div>
<p>You can also assign no password to SoftAP launched as a captive portal. Assigning a null string as <code>String("")</code> to <a href="apiconfig.html#psk"><em>AutoConnectConfig::psk</em></a> does not require a password when connecting to SoftAP.<br />
But this method is not recommended. The broadcast radio of SSID emitted from SoftAP will leak and reach several tens of meters.</p>
<h2 id="combination-with-mdns">Combination with mDNS<a class="headerlink" href="#combination-with-mdns" title="Permanent link">&para;</a></h2>
<p>With <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266mDNS">mDNS library</a>, you can access to ESP8266 by name instead of IP address after connection. The Sketch can start the MDNS responder after <a href="api.html#begin">AutoConnect::begin</a>.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #75715e">#include</span><span style="color: #f8f8f2"> </span><span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
<span style="color: #75715e">#include</span><span style="color: #f8f8f2"> </span><span style="color: #75715e">&lt;ESP8266mDNS.h&gt;</span>
<span style="color: #75715e">#include</span><span style="color: #f8f8f2"> </span><span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
<span style="color: #f8f8f2">AutoConnect Portal;</span>
<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  </span><span style="color: #66d9ef">if</span><span style="color: #f8f8f2"> (Portal.begin()) {</span>
<span style="color: #f8f8f2">    </span><span style="color: #66d9ef">if</span><span style="color: #f8f8f2"> (MDNS.begin(</span><span style="color: #e6db74">&quot;esp8266&quot;</span><span style="color: #f8f8f2">)) {</span>
<span style="background-color: #49483e"><span style="color: #f8f8f2">      MDNS.addService(</span><span style="color: #e6db74">&quot;http&quot;</span><span style="color: #f8f8f2">, </span><span style="color: #e6db74">&quot;tcp&quot;</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">80</span><span style="color: #f8f8f2">);</span>
</span><span style="background-color: #49483e"><span style="color: #f8f8f2">    }</span>
</span><span style="color: #f8f8f2">  }</span>
<span style="color: #f8f8f2">}</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  Portal.handleClient();</span>
<span style="color: #f8f8f2">}</span>
</code></pre></div>
<h2 id="make-ssid-of-softap-unique">Make SSID of SoftAP unique<a class="headerlink" href="#make-ssid-of-softap-unique" title="Permanent link">&para;</a></h2>
<p>You can change SoftAP's SSID and password programmatically when the captive portal starts up. By using chip specific ID of esp8266/esp32 you can make SSID of SoftAP unique. SSID and password for SoftAP is <a href="apiconfig.html#apid"><em>AutoConnectConfig::apid</em></a> and <a href="apiconfig.html#psk"><em>AutoConnectConfig::psk</em></a>.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">AutoConnect       portal;</span>
<span style="color: #f8f8f2">AutoConnectConfig acConfig;</span>

<span style="color: #f8f8f2">acConfig.apid </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">&quot;ESP-&quot;</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">+</span><span style="color: #f8f8f2"> String(ESP.getChipId(), HEX);</span>
<span style="color: #f8f8f2">aConfig.psk </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> YOUR_PASSWORD;</span>
<span style="color: #f8f8f2">portal.config(acConfig);</span>
<span style="color: #f8f8f2">portal.begin();</span>
</code></pre></div>
<div class="admonition hint">
<p class="admonition-title">Obtaining chip ID for ESP32</p>
<p><code>acConfig.apid = "ESP-" + String((uint32_t)(ESP.getEfuseMac() &gt;&gt; 32), HEX);</code></p>
</div>
<h2 id="relocate-the-autoconnect-home-path">Relocate the AutoConnect home path<a class="headerlink" href="#relocate-the-autoconnect-home-path" title="Permanent link">&para;</a></h2>
<p>A home path of AutoConnect is <strong>/_ac</strong> by default. You can access from the browser with <code>http://IPADDRESS_OF_ESP_MODULE/_ac</code>. You can change the home path by revising <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L113"><strong>AUTOCONNECT_URI</strong></a> macro in <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h"><code>AutoConnectDefs.h</code></a> header file.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #75715e">#define AUTOCONNECT_URI         &quot;/_ac&quot;</span>
</code></pre></div>
<h2 id="softap-access-point-ip-settings">SoftAP access point IP settings<a class="headerlink" href="#softap-access-point-ip-settings" title="Permanent link">&para;</a></h2>
<p>AutoConnect will activate <a href="https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-class.html#soft-access-point-class">SoftAP</a> at failed the 1<sup>st</sup>-WiFi.begin. Its SoftAP settings are stored in AutoConnectConfig as the following parameters. The Sketch could be configured SoftAP using these parameters, refer the <a href="apiconfig.html">AutoConnectConfig API</a> for details.</p>
<table>
<thead>
<tr>
<th>AutoConnectConfig member</th>
<th>Settings for</th>
<th>Defined symbol</th>
<th>Initial value</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="apiconfig.html#apip"><strong>apip</strong></a></td>
<td>SoftAP IP address</td>
<td>AUTOCONNECT_AP_IP</td>
<td>172.217.28.1</td>
</tr>
<tr>
<td><a href="apiconfig.html#gateway"><strong>gateway</strong></a></td>
<td>Gateway IP address</td>
<td>AUTOCONNECT_AP_GW</td>
<td>172.217.28.1</td>
</tr>
<tr>
<td><a href="apiconfig.html#netmask"><strong>netmask</strong></a></td>
<td>Subnet mask for the SoftAP</td>
<td>AUTOCONNECT_AP_NM</td>
<td>255.255.255.0</td>
</tr>
<tr>
<td><a href="apiconfig.html#channel"><strong>channel</strong></a></td>
<td>WiFi channel for the SoftAP</td>
<td>AUTOCONNECT_AP_CH</td>
<td>1</td>
</tr>
<tr>
<td><a href="apiconfig.html#hidden"><strong>hidden</strong></a></td>
<td>Hide the SoftAP</td>
<td></td>
<td>false</td>
</tr>
</tbody>
</table>
<h2 id="static-ip-assignment-as-a-client">Static IP assignment as a client<a class="headerlink" href="#static-ip-assignment-as-a-client" title="Permanent link">&para;</a></h2>
<p>It is possible to assign a static IP Address to ESP8266/ESP32 in STA mode.<sup id="fnref:3"><a class="footnote-ref" href="#fn:3">1</a></sup> By default DHCP is enabled and it becomes the IP address assigned by the DHCP server with <strong>WiFi.begin</strong>.</p>
<p>These settings are made via <a href="apiconfig.html">AutoConnectConfig</a> as in the case of SoftAP settings. To assign a static IP to ESP8266/ESP32 with WIFI_STA, the following parameters are required:</p>
<table>
<thead>
<tr>
<th>AutoConnectConfig member</th>
<th>Settings for</th>
<th>Initial value</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="apiconfig.html#staip"><strong>staip</strong></a></td>
<td>Station IP address</td>
<td>0.0.0.0</td>
</tr>
<tr>
<td><a href="apiconfig.html#stagateway"><strong>staGateway</strong></a></td>
<td>Gateway address for the station</td>
<td>0.0.0.0</td>
</tr>
<tr>
<td><a href="apiconfig.html#stanetmask"><strong>staNetmask</strong></a></td>
<td>Subnet mask for the the station</td>
<td>0.0.0.0</td>
</tr>
<tr>
<td><a href="apiconfig.html#dns1"><strong>dns1</strong></a></td>
<td>Primary DNS server IP address</td>
<td>0.0.0.0</td>
</tr>
<tr>
<td><a href="apiconfig.html#dns2"><strong>dns2</strong></a></td>
<td>Secondary DNS server IP address</td>
<td>0.0.0.0</td>
</tr>
</tbody>
</table>
<p>The above parameters must be set using <a href="apiconfig.html">AutoConnect::config</a> prior to <a href="apiconfig.html#begin">AutoConnect::begin</a> call as following:</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">AutoConnect        portal;</span>
<span style="color: #f8f8f2">AutoConnectConfig  Config;</span>
<span style="color: #f8f8f2">Config.staip </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">10</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">Config.staGateway </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">Config.staNetmask </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> IPAddress(</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">0</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">Config.dns1 </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">portal.config(Config);</span>
<span style="color: #f8f8f2">portal.begin();</span>
</code></pre></div>
<h2 id="static-ip-preservation">Static IP preservation<a class="headerlink" href="#static-ip-preservation" title="Permanent link">&para;</a></h2>
<p>Prioritizing the station IP configuration specified in <a href="#static-ip-assignment-as-a-client">AutoConnectConfig</a> over the existing configuration must be accompanied by an explicit indication via the <a href="apiconfig.html#preserveip"><em>AutoConnectConfig::preserveIP</em></a>. The <a href="apiconfig.html#preserveip"><em>AutoConnectConfig::preserveIP</em></a> setting allows AutoConnect to override existing credentials applied at reconnecting with static IP assignments made with the <a href="apiconfig.html#staip"><em>AutoConnectConfig::staip</em></a>, <a href="apiconfig.html#stagateway"><em>AutoConnectConfig::staGateway</em></a>, and <a href="apiconfig.html#stanetmask"><em>AutoConnectConfig::staNetmask</em></a> settings. The following sketch shows a use case where the preserveIP setting can override an existing static IP configuration.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">AutoConnect portal;</span>
<span style="color: #f8f8f2">AutoConnectConfig config;</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  </span><span style="color: #75715e">// If the connection to the last established AP fails, attempt to</span>
<span style="color: #f8f8f2">  </span><span style="color: #75715e">// connect to the nearest AP using known credentials.</span>
<span style="color: #f8f8f2">  config.autoReconnect </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> true;</span>

<span style="color: #f8f8f2">  </span><span style="color: #75715e">// Apply the following static IP configuration to reconnect.</span>
<span style="color: #f8f8f2">  config.staip </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">10</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">  config.staGateway </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">  config.staNetmask </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> IPAddress(</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">0</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">  config.dns1 </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">, </span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>

<span style="color: #f8f8f2">  </span><span style="color: #75715e">// The above settings take precedence over the IP settings of the</span>
<span style="color: #f8f8f2">  </span><span style="color: #75715e">// stored credentials.</span>
<span style="color: #f8f8f2">  </span><span style="color: #75715e">// If this value is left false, the station IP configuration contained</span>
<span style="color: #f8f8f2">  </span><span style="color: #75715e">// in the stored credentials takes precedence.</span>
<span style="background-color: #49483e"><span style="color: #f8f8f2">  config.preserveIP </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> true;</span>
</span>
<span style="color: #f8f8f2">  portal.config(config);</span>
<span style="color: #f8f8f2">  portal.begin();</span>
<span style="color: #f8f8f2">}</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  portal.handleClient();</span>
<span style="color: #f8f8f2">}</span>
</code></pre></div>
<p>Also, an example sketch with UI for static IP configuration using custom web pages is included in the AutoConnect repository as <a href="https://github.com/Hieromon/AutoConnect/blob/master/examples/ConfigIP/ConfigIP.ino">ConfigIP.ino</a>.  This example is useful for overwriting stored IP settings with new IP settings entered from the UI.</p>
<div class="admonition info">
<p class="admonition-title">Background on the need for preserveIP indication</p>
<p>By default, <a href="apiconfig.html#autoreconnect">AutoConnectConfig::autoReconnect</a> restores IP settings along with a credential. So even if the sketch explicitly specifies the static IP settings with AutoConnectConfig, there are cases where they will not be applied upon reconnection.</p>
</div>
<h2 id="station-hostname">Station hostname<a class="headerlink" href="#station-hostname" title="Permanent link">&para;</a></h2>
<p><a href="apiconfig.html#hostname"><em>AutoConnectConfig::hostName</em></a> assigns a station DHCP hostname to the ESP module. The hostname must satisfy <a href="https://tools.ietf.org/html/rfc952">RFC952</a> compliant and meet the following restrictions:</p>
<ul>
<li>Up to 24 characters</li>
<li>Only the alphabet (a-z, A-Z), digits (0-9), minus sign (-)</li>
<li>No '-' as last character</li>
</ul>
<div class="footnote">
<hr />
<ol>
<li id="fn:3">
<p>Static IP address assignment is available from version 0.9.3.&#160;<a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li>
</ol>
</div>


  




                
              </article>
            </div>
          
          
        </div>
        
          <a href="#" class="md-top md-icon" data-md-component="top" hidden>
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
            Back to top
          </a>
        
      </main>
      
        <footer class="md-footer">
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
    <div class="md-copyright__highlight">
      Copyright &copy; 2018-2023 Hieromon Ikasamo
    </div>
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>
  
</div>
      
        <div class="md-social">
  
    
    
      
      
    
    <a href="https://github.com/Hieromon" target="_blank" rel="noopener" title="github.com" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
    </a>
  
    
    
      
      
    
    <a href="https://twitter.com/hieromon" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
    </a>
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    
    <script id="__config" type="application/json">{"base": ".", "features": ["navigation.top"], "search": "assets/javascripts/workers/search.db81ec45.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
    
    
      <script src="assets/javascripts/bundle.a00a7c5e.min.js"></script>
      
        <script src="js/gifffer.min.js"></script>
      
    
  </body>
</html>